/**
 * 获取缓存中的头像昵称
 * @param {string} key 获取缓存中指定key的数据
 */
function getStorage(key) {
    return wx.getStorage({
        key: key
    })
}


/**
 * 获取人脸识别token
 */
function getFaceAccessToken(client_id, client_secret) {
    // 实例化一个promise对象
    // resolve 兑现函数
    // reject 拒绝函数
    return new Promise((resolve, reject) => {
        wx.request({
            url: 'https://aip.baidubce.com/oauth/2.0/token',
            method: "GET",
            data: {
                // 必须参数，固定值 "client_credentials"
                grant_type: "client_credentials",
                // 必须参数，应用的API Key
                client_id,
                // 必须参数，应用的Secret Key
                client_secret
            },
            success: res => resolve(res),
            fail: err => reject(err)
        })
    })
}


/**
 * 获取人脸数据
 * @param {string} base base64位编码
 * @param {string} token 获取的人脸识别access_token
 */
function getFaceInfo(base, token) {
    return new Promise((resolve, reject) => {
        // 人脸识别
        wx.request({

            // 访问接口（携带密钥访问）
            url: "https://aip.baidubce.com/rest/2.0/face/v3/detect" + "?access_token=" + token,

            // method："GET"，
            // 一般为文字信息，并且信息不加密，信息会暴露在地址栏中（不安全，传递块，只能传递文字类数据）

            // method："GET"，
            // 请求/发送数据相对于GET比较慢，但是数据加密，不会暴露在地址栏中，且请求数据的种类多

            // 请求方式
            method: "POST",
            // 跨域问题产生
            // 基于同源策略

            header: {
                "Content-Type": "application/json"
            },

            // 请求的时候需要传递的数据
            data: {
                image: base,
                image_type: "BASE64",
                face_field: "age,beauty,expression,face_shape,gender,glasses,landmark,landmark150,quality,eye_status,emotion,face_type,mask,spoofing"
            },
            success: res => resolve(res),
            fail: err => reject(err)
        })
    })
}

/**
 * 人像动漫化
 * @param {string} base base64位编码
 * @param {string} token 获取的人脸识别access_token
 */
function getAnimation(base, token) {
    return new Promise((resolve, reject) => {
        wx.request({
            url: 'https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime' + '?access_token=' + token,
            method: "POST",
            header: {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            data: {
                image: base
            },
            success: res => resolve(res),
            fail: err => reject(err)
        })
    })
}


// 导出模块
module.exports = {
    getStorage,
    getFaceAccessToken, // 获取access_token
    getFaceInfo, // 获取人脸数据
    getAnimation // 人像动漫化
};